#ifndef YILS_H_INCLUDED
#define YILS_H_INCLUDED

#ifndef YALSINTERNAL
#error "this file is internal to 'libyals'"
#endif

/*------------------------------------------------------------------------*/

#include "yals.h"

/*------------------------------------------------------------------------*/

#include <stdlib.h>

/*------------------------------------------------------------------------*/

#ifndef NDEBUG
void
yals_logging(Yals*, int logging);
void
yals_checking(Yals*, int checking);
#endif

/*------------------------------------------------------------------------*/

void
yals_abort(Yals*, const char* fmt, ...);
void
yals_exit(Yals*, int exit_code, const char* fmt, ...);
void
yals_msg(Yals*, int level, const char* fmt, ...);

const char*
yals_default_prefix(void);
const char*
yals_version();
void
yals_banner(const char* prefix);

/*------------------------------------------------------------------------*/

double
yals_process_time(); // process time

double
yals_sec(Yals*); // time in 'yals_sat'
size_t
yals_max_allocated(Yals*); // max allocated bytes

/*------------------------------------------------------------------------*/

void*
yals_malloc(Yals*, size_t);
void
yals_free(Yals*, void*, size_t);
void*
yals_realloc(Yals*, void*, size_t, size_t);

/*------------------------------------------------------------------------*/

void
yals_srand(Yals*, unsigned long long);

/*------------------------------------------------------------------------*/

extern const char* yals_bright_red_color_code;
extern const char* yals_normal_color_code;
extern const char* yals_bold_color_code;

#endif
